<?php

/*
 * class Session Tools
 * 
 * Questa classe svolge funzione di wrapper attorno
 * alle variabili $_GET e $_POST e mette a disposizione
 * metodi di utilità per operare su quest'ultime
 * 
 */
class SessionTools {
	
	/*
	 * void set (string $var, mixed $value)
	 * Imposta un valore in sessione
	 * Se $value è null, rimuove il valore dalla sessione
	 */
	public static function set($var, $value = null) {
		if (is_null($value)) {
			unset ($_SESSION['$var']);
		} 
		else {
			$_SESSION[$var] = serialize($value);
		} 
	}

	/*
	 * void start (string $name)
	 * Avvia la sessione, con nome $name 
	 */
	public static function start($name = null) {
		if (!empty($name)) {
			session_name($name);
		}
		session_start();
	}
	
	/* 
	 * bool exists (string $var)
	 * Restituisce true se il valore è presente in sessione
	 */
	public static function exists($var) {
		return (isset($_SESSION[$var]) ? true : false);
	}
	
	/*
	 * mixed get (string $var)
	 * Se invocato senza parametri, restituisce il dump di $_SESSION
	 * Preleva e restituisce il valore richiesto dalla sessione
	 * Restituisce false se $var non è presente in sessione
	 */
	public static function get($var = null) {
		if (is_null($var)) {
			return $_SESSION;
		}
		return (self::exists($var) ? unserialize($_SESSION[$var]) : false);
	}
	
	/*
	 * void close ( void )
	 * Svuota e chiude la sessione
	 */
	public static function close() {
		unset($_SESSION);
		session_destroy();
	}

}

?>